<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /*
    bind() 方法创建一个新的函数，在 bind() 被调用时，这个新函数的 this 被指定为 bind() 的第一个参数，而其余参数将作为新函数的参数，供调用时使用。 
    bind()不会调用函数，但是能改变函数内部this指向
    语法:function.bind(thisArg[, arg1[, arg2[, ...]]])
    参数
      thisArg：调用绑定函数时作为 this 参数传递给目标函数的值。如果使用new运算符构造绑定函数，则忽略该值。当使用 bind 在 setTimeout 中创建一个函数（作为回调提供）时，作为 thisArg 传递的任何原始值都将转换为 object。如果 bind 函数的参数列表为空，或者thisArg是null或undefined，执行作用域的 this 将被视为新函数的 thisArg。
      arg1, arg2, ... 当目标函数被调用时，被预置入绑定函数的参数列表中的参数。
    返回值：返回一个原函数的拷贝，并拥有指定的 this 值和初始参数。
     */

    const person = {
      name: "陶品奇",
      age: 22,
    }
    function getSum(x, y) {
      console.log(this);
      return x + y
    }
    
    const newGetSum = getSum.bind(person, 10, 20)
    console.log(newGetSum());
    console.log(newGetSum());
    console.log(newGetSum());

  </script>
</body>

</html>